package com.niiwoo.civet.trade.service.newRefund;

import com.niiwoo.civet.trade.dto.response.myloan.GetWithholdRepaymentResultDTO;
import com.niiwoo.civet.trade.dto.response.myloan.QueryRepaymentProjectSummaryDTO;
import com.niiwoo.civet.trade.dto.response.myloan.RefundGuideContentResponseDTO;

/**
 * 还款dubbo服务
 */
public interface RefundDubboService {

    /**
     *  还款冻结补单批处理
     */
    public void freezeDealBatch();

    public void unFreezeDealBatch();

    /**
     * 银行放款结果查询
     */
    void bankRefundResultQueryJob();

    /**
     * 回款成功记账任务
     */
    void receivedRepaymentSuccessAccountingJob();
    
    /**
     * 还款提醒定时任务
     */
    void sendRepaymentRemindMessageForJob();

    /**
     * 还款逾期定时任务
     */
    void sendRepaymentOverdueMessageForJob();

    /**
     * 还款代扣还款结果
     * <p/>
     * 注意：资产端（如卡牛、融360）走代扣还款流程，交易系统分代扣、还款流程，因此还款状态需要考虑代扣流程
     * 
     * <li>1、代扣失败还款状态：还款失败</li>
     * <li>2、代扣处理中：还款状态为初始化</li>
     * <li>3、代扣成功分两种情况</li>
     * <li>&nbsp;&nbsp;&nbsp;&nbsp;3.1还款订单不处理，还款状态为处理中</li>
     * <li>&nbsp;&nbsp;&nbsp;&nbsp;3.2还款订单存在即为还款状态</li>
     * 
     * @param projectId
     * @param orgRequestNo
     * @return
     */
    GetWithholdRepaymentResultDTO getWithholdRepaymentResult(Long projectId, String orgRequestNo);
    
    /**
     * 查询还款摘要
     * 
     * @param projectId
     * @return
     */
    QueryRepaymentProjectSummaryDTO getRepaymentProjectSummary(Long projectId);
    /**
     * 重发交易明细订单
     */
    default void repeatDetailOrderForJob(){
        throw new UnsupportedOperationException("不支持的方法");
    }

    /**
     * 重发交易明细订单（人工）
     */
    default void repeatDetailOrder(Long refundOrderId){
        throw new UnsupportedOperationException("不支持的方法");
    }

    default RefundGuideContentResponseDTO refundGuideContent(String userId){
        throw new UnsupportedOperationException("不支持的方法");
    }

    default void handlePartFailedRefund(Long refundOrderId){
        throw new UnsupportedOperationException("不支持的方法");
    }
}
